package leetcode;

import java.util.Arrays;

/**
 * 给你一个数组 nums，对于其中每个元素 nums[i]，请你统计数组中比它小的所有数字的数目。
 * 换而言之，对于每个 nums[i] 你必须计算出有效的 j 的数量，其中 j 满足 j != i 且 nums[j] < nums[i] 。
 * 以数组形式返回答案。
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/how-many-numbers-are-smaller-than-the-current-number
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 *
 * @author Europa
 */
public class Num1365 {

    public int[] smallerNumbersThanCurrent(int[] nums) {
        int[] res = new int[nums.length];
        int[] elements = new int[101];
        // 统计每个元素出现的次数
        for (int x : nums) {
            elements[x]++;
        }
        //根据元素的大小确定遍历elements数组的哪些元素
        for (int i = 0; i < nums.length; i++) {
            //找到小于nums[i]的元素总个数
            for (int j = 0; j < nums[i]; j++) {
                res[i] += elements[j];
            }
        }
        return res;
    }

    public static void main(String[] args) {
        Num1365 num1365 = new Num1365();
        int[] ints = {8, 1, 2, 2, 3};
        int[] smallerNumbersThanCurrent = num1365.smallerNumbersThanCurrent(ints);
        System.out.println(Arrays.toString(smallerNumbersThanCurrent));
    }
}
